package langchain4j.entity;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import javax.validation.constraints.NotNull;

import java.io.Serializable;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

/**
* 
* @TableName user
*/
@Data
public class User implements Serializable {

    @NotNull(message="[]不能为空")
    private Long id;

    @NotBlank(message="[登录用户名]不能为空")
    @Size(max= 50,message="编码长度不能超过50")
    @Length(max= 50,message="编码长度不能超过50")
    private String username;

    @NotBlank(message="[存储加密后的密码]不能为空")
    @Size(max= 255,message="编码长度不能超过255")
    @Length(max= 255,message="编码长度不能超过255")
    private String password;

    @NotBlank(message="[用户真实姓名]不能为空")
    @Size(max= 50,message="编码长度不能超过50")
    @TableField("real_name")
    @JsonProperty("real_name")
    @Length(max= 50,message="编码长度不能超过50")
    private String realName;

    @NotNull(message="[]不能为空")
    private String gender;

    
    private Date birthDate;

    @NotBlank(message="[]不能为空")
    @Size(max= 20,message="编码长度不能超过20")
    
    @Length(max= 20,message="编码长度不能超过20")
    private String phone;


    @NotBlank(message="[身份证号]不能为空")
    @Size(max= 18,message="编码长度不能超过18")
    @TableField("id_card")
    @JsonProperty("id_card")
    @Length(max= 18,message="编码长度不能超过18")
    private String idCard;

    @NotNull(message="[]不能为空")
    
    private Date registerTime;

    
    private Date lastLoginTime;

    @Size(max= 255,message="编码长度不能超过255")
    @Length(max= 255,message="编码长度不能超过255")
    private String avatarPath;

    @TableField(condition = "is_delete")// 映射数据库字段
    @JsonIgnore
    private Integer isDelete;
}